package com.ce.pms.charge.dao;

import java.util.Date;
import java.util.List;


import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.charge.model.ChargeDatasDomain;
import com.ce.pms.charge.service.impl.MeterDataRegisterServiceImpl.Conditions;
import com.sitechasia.webx.core.support.Page;

public interface IMeterDataRegisterDao extends IPmsBaseDao<ChargeDatasDomain> {
	/**
	 * 功能描述:查找指定房间的新建状态的原始数据<br>
	 * @param houseId
	 * @return<br>
	 * Create author:胡煦<br>
	 * Create on:2008-10-13<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List<ChargeDatasDomain> getNewMeterDatasListByHouseId(Long houseId);
	/**
	 *
	 * 功能描述: 根据房屋ID和走表ID查询某个收费周期下有效的抄表数据
	 *
	 * @author 胡煦
	 * Created on:2008-7-14
	 *
	 * 修改原因：
	 * @param houseId
	 * @return MeterDomain 返回结果
	 */
	public ChargeDatasDomain getMeterDatasListByHouseIdAndMeterId(Long houseId,Long meterId);
	/**
	 * 方法描述: 批量提交抄表数据
	 * @author 胡煦
	 * Create on:2008-9-9
	 * @param List<Object[]> list
	 * @return boolean
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public boolean batchInsertChargeDatas(List<Object[]> list);
	/**
	 * 功能描述: 通过楼栋id查询有效走表底数和走表原始数据实体List,按房号分组并取其中ID最大的
	 *
	 * @author 胡煦
	 * Created on:2008-8-25
	 *
	 * 修改原因：
	 * @param buildingId
	 * @return MeterDomain 返回结果
	 */
	public List getMeterDataBasesByBuildingId(Long buildingId,String meterTypeCode);
	/**
	 *
	 * 功能描述: 通过楼栋编号，房号，走表名称查询当前有效收费周期下为新建状态的走表实体List
	 *
	 * @author 胡煦
	 * Created on:2008-7-14
	 *
	 * 修改原因：
	 * @param houseId
	 * @return MeterDomain 返回结果
	 */
	public List<ChargeDatasDomain> getMeterDatasListByNames(int seqNo, String houseNumber,String meterTypeName);
	/**
	 *
	 * 功能描述: 通过收费周期id查询新建状态的走表实体List
	 *
	 * @author 胡煦
	 * Created on:2008-8-27
	 *
	 * 修改原因：
	 * @param periodId
	 * @return MeterDomain 返回结果
	 */
	public List<ChargeDatasDomain> getMeterDatasListByPeriodId(Long periodId);
	/**
	 *
	 * 功能描述: 通过楼栋id查询有效的走表原始数据实体List,按房号分组并取其中ID最大的
	 *
	 * @author 胡煦
	 * Created on:2008-8-25
	 *
	 * 修改原因：
	 * @param buildingId
	 * @return MeterDomain 返回结果
	 */
	public List getMeterDatasListByBuildingId(Long buildingId,String meterTypeCode);
	/**
	 * 方法描述: 查询最大的抄表时间
	 * @author 胡煦
	 * Create on:2008-8-21
	 * @param nameStr：查询条件班级名称
	 * @return Date
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Date getMaxRecordTime();
	/**
	 *
	 * 功能描述: 根据房屋ID和走表类型查询某个收费周期下有效的抄表数据VO
	 *
	 * @author 胡煦
	 * Created on:2008-7-14
	 *
	 * 修改原因：
	 * @param houseId
	 * @return MeterDomain 返回结果
	 */
	public ChargeDatasDomain getMeterDatasListByHouseIdAndType(Long houseId,String meterTypeCode);
	/**
	 *
	 * 功能描述: 通过房号id查询走表实体List
	 *
	 * @author 胡煦
	 * Created on:2008-7-14
	 *
	 * 修改原因：
	 * @param houseId
	 * @return MeterDomain 返回结果
	 */
	public List<ChargeDatasDomain> getMeterDatasListByHouseId(Long houseId);

	/**
	 * 功能描述:查找指定收费周期、房间的新建状态的原始数据<br>
	 * @param periodId
	 * @param houseId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-10-13<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List<ChargeDatasDomain> getNewMeterDatasListByPeriodId(Long periodId,Long houseId);

	/**
	 * 方法描述: 查询所有抄表数据方法
	 * @author 胡煦
	 * Create on:2008-8-13
	 * @param
	 * @return List<ChargeDatasDomain>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<ChargeDatasDomain> getAllChargeDatasDomainList();
	/**
	 * 方法描述: 分页组合查询抄表数据方法
	 * @author 胡煦
	 * Create on:2008-8-13
	 * @param conditions,currentPage, pageSize
	 * @return page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page getChargeDatasDomainsByPage(Conditions conditions, int currentPage,int pageSize);

	/**
	 * 功能描述:查询指定收费周期状态为已计算的所有原始数据<br>
	 * @param periodId
	 * @return <br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-19<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List<ChargeDatasDomain> queryLastMeterData(Long periodId);

	/**
	 * 功能描述:查询指定房间指定走表类型且状态为已计算的抄表时间为最后的原始数据<br>
	 * @param periodId
	 * @return <br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-19<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public ChargeDatasDomain findLastMeterData(Long houseId,String meterType);

}
